<?php
namespace Modules\Admin\Service;
use Modules\Admin\Entities\Module;

class ModuleService{
    /**
     * 更新模块缓存
     */
    public function updateCache(){
        //添加新模块数据之前将模块表中的所有模块数据删除
        //truncate()方法截断某个表中的所有数据
        \DB::table('modules')->truncate();
        //获取所有模块数据
       $modules=\HDModule::getModulesLists( );
       //循环所有模块数据
       foreach ($modules as $v){
           //存储每个模块数据
          Module::create([
             'name'=>$v['name'],
             'title'=>$v['title'],
            'is_default'=>0,
             'home_access'=>$this->is_home_access($v),
          ]);
       }
    }

    /**
     * 模块是否有前台访问功能
     *///我们规定,如果在对应的模块内,有一个叫做HomeController的类存在,并且这个类中有一个叫做index的方法,我们就认为这个模块是可以前台访问
    public function is_home_access($module){
        //定义一个变量
        $class = '\Modules\\'.$module['name'].'\\Http\\Controllers\\HomeController';
        //判断是否有HomeController存在并且里面是否有index方法，返回真和假
        return class_exists($class) && method_exists($class,'index');
    }
    /**
     * 获取默认模板
     */
    public function getDefault(){

      //找到允许前台访问并且是默认模块的数据
       $module=Module::where([
           ['home_access',1],
           ['is_default',1]
       ])->first();
        //允许前台访问并且是默认模块的数据可能不存在,如果不存在,我们就找到某个指定的模块数据作为找不到设置默认模块数据的时候使用访问的模块
        $module=$module? $module:Module::where('name','Shop')->first();
        return $module;
    }
}
?>